/*
 * L9Rect.h
 *
 *  Created on: 2011-10-18
 *      Author: baixp
 */

#ifndef L9RECT_H_
#define L9RECT_H_
namespace lib9bada {
class L9Rect {
public:
	/**
	 * 默认构造函数，创建一个矩形
	 */
	L9Rect();
	/**
	 * 根据左上角和右下角两点坐标来创建矩形
	 * @param leftX int
	 * @param topY int
	 * @param rightX int
	 * @param bottomY int
	 */
	L9Rect(int leftX, int topY, int rightX, int bottomY);

	/**
	 * 根据数组来创建矩形，数组长度为4，存储的是矩形左上角和右下角两点坐标
	 * rect[0]代表leftX,rect[1]代表topY,rect[2]代表rightX,rect[3]代表bottomY
	 * @param rect int[]
	 */
	L9Rect(int* rect);

	/**
	 * 根据矩形来创建矩形
	 * @param r L9Rect
	 */
	L9Rect(const L9Rect& r);
	/**
	 * 重载赋值操作符，这个往往与拷贝构造函数一起定义
	 */
	L9Rect& operator=(const L9Rect& r);
	virtual ~L9Rect();
	//矩形常量
	static const int K_Rect_Left = 0;
	static const int K_Rect_Top = 1;
	static const int K_Rect_Right = 2;
	static const int K_Rect_Bottom = 3;




	/**
	 * 根据左上角和右下角两点坐标来设置矩形
	 * @param leftX int
	 * @param topY int
	 * @param rightX int
	 * @param bottomY int
	 */
	void setRect(int leftX, int topY, int rightX, int bottomY);

	/**
	 * 根据左上角和矩形的宽和高来设置矩形
	 * @param leftX int
	 * @param topY int
	 * @param w int
	 * @param h int
	 */
	void setRect2(int leftX, int topY, int w, int h);

	/**
	 * 返回表示整数数组，长度为4，代表了矩形的左上角和右下角两点的坐标
	 * @return int[]
	 */
	int* getRect();

	/**
	 *返回表示整数数组，长度为4，代表了矩形的左上角坐标和矩形的宽和高
	 * @return int[]
	 */
	int* getRect2();

	/**
	 * 判断矩形是否相交
	 * @return boolean
	 */
	bool isInterRect(const L9Rect& Rect);

	/**
	 * 移动矩形
	 * @param offsetX int
	 * @param offsetY int
	 */
	void moveRect(int offsetX, int offsetY);

	/**
	 * 判断该点是否在矩形之内
	 * @param x int
	 * @param y int
	 * @return boolean
	 */
	bool isInRect(int x, int y);

	/**
	 * 返回矩形的宽
	 * @return int
	 */
	int Width();

	/**
	 * 返回矩形的高
	 * @return int
	 */
	int Height();

	int Left;
	int Top;
	int Right;
	int Bottom;
};
};
#endif /* L9RECT_H_ */
